<?php
#include_once("../../../programas/include_utiles.php");
class gcp_egreso {
	function gcp_egreso(){
		$this->sql = new DmpSql();
	}
//$idcp_origen,$documento_fisico
	function agregar(
            $idcentro_costo,
            $acentro_costo_porcentaje,
            $idtipo_cp,
            $razon_social,
            $idpersona,
            $serie,
            $numero,
            $fecha_emision,
            $periodo,
            $fecha_pago,
            $fecha_vencimiento,
            $idmoneda,
            $tipo_cambio,
            $idcompra_tipo_operacion,
            $subtotal,
            $descuento,
            $isc,
            $monto_afecto,
            $monto_inafecto,
            $igv,
            $retencion_cuarta_categoria,
            $total,
            $observacion,
            $porc_igv,
            $porc_renta_cuarta_categoria,
            $porc_isc,
            $codigo_retraccion,
            $numero_detraccion_percepcion,
            $fecha_detraccion_percepcion,
            $porc_detraccion_percepcion,
            $monto_detraccion_percepcion,
            $tiene_detraccion_percepcion){
            ########################################
            $ayudante=new Ayudante();
            if($fecha_emision==""){
                $fecha_emision=NULL;
            }else{
                $fecha_emision="'".$ayudante->FechaRevezMysql($fecha_emision,"/")."'";
            }
            if($fecha_vencimiento==""){
                $fecha_vencimiento=NULL;
            }else{
                $fecha_vencimiento="'".$ayudante->FechaRevezMysql($fecha_vencimiento,"/")."'";
            }
            if($fecha_detraccion_percepcion==""){
                $fecha_detraccion_percepcion=NULL;
            }else{
                $fecha_detraccion_percepcion="'".$ayudante->FechaRevezMysql($fecha_detraccion_percepcion,"/")."'";
            }
            $error=0;
            $ayudante=new Ayudante();
            ##################################################
            $this->sql->consultar("START TRANSACTION","sigh");
            ##################################################
            //concepto, fecha de pago,documento_fisico,flete,idorden_pago,esta_pagada,idmodalidad_pago,aumenta_precio,pago_acuenta,idcheque,idcp_origen
            //concepto
            //                  monto_detracion_percepcion='".$idmoneda."',
            //hay retencion por facturas y retencion por recibos
            //echo $razon_social;
            $razon_social_aux=$razon_social;
            $pos_razon_social=strpos($razon_social," (RUC");
            $razon_social=  substr($razon_social,0,$pos_razon_social);// como es una busqueda rapida viene concatenado con (RUC
            $ruc=substr($razon_social_aux, $pos_razon_social+7,  strlen($razon_social_aux)-1);
            $sqlcp="INSERT INTO cp_egreso SET
              idtipo_cp='".$idtipo_cp."',
              idcp_origen='4',
              idpersona='".$idpersona."',
              idempresa='".$idpersona."',
              ruc='$ruc',
              razon_social='".$razon_social."',
              idcompra_tipo_operacion='".$idcompra_tipo_operacion."',
              serie='".$serie."',
              numero='".$numero."',
              fecha=$fecha_emision,
              fecha_vencimiento=$fecha_vencimiento,
              monto_inafecto='".$monto_inafecto."',
              monto_afecto='".$monto_afecto."',
              idmoneda='".$idmoneda."',
              monto_cambio_moneda='".$tipo_cambio."',
              observacion='".$ayudante->caracter($observacion)."',
              igv='".$igv."',
              porc_igv='".$porc_igv."',
              descuento='".$descuento."',
              total='".$total."',
              subtotal='".$subtotal."',
              asiento_realizado='0',
              esta_declarado='0',
              esta_anulada='0',
              retencion_cuarta_categoria='".$retencion_cuarta_categoria."',
              porc_renta_cuarta_categoria='".$porc_renta_cuarta_categoria."',
              esta_activo='1',
              idusuario='".$_SESSION[id_usu]."',
              tiene_detraccion_percepcion='".$tiene_detraccion_percepcion."' ";

            #######################detraccion percecpion############################
            if($fecha_detraccion_percepcion!=''){
               $sqlcp.=",porc_retencion='".$porc_retencion."',
               porc_detracion_percepcion='".$porc_detraccion_percepcion."',
               monto_detraccion_percepcion='".$monto_detraccion_percepcion."',
               fecha_detraccion_percepcion='".$fecha_detraccion_percepcion."',
               codigo_detraccion='".$ayudante->caracter($codigo_retraccion)."'";
            }
            //echo $sqlcp;exit;
            ##################################################
            if($this->sql->consultar($sqlcp, "sigh")){
                $idcp_egreso=$this->sql->idtabla();
            }else{
                $error++;
            }
            ####################################################
            //centro de costo//
            $acentro_costo_porcentaje=100;//porcentaje
            $sql_centro_costo="INSERT INTO
                              cp_egreso_centro_costo(
                              idcentro_costo,
                              idcp_egreso,
                              porcentaje)
                            VALUES(
                              $idcentro_costo,
                              $idcp_egreso,
                              $acentro_costo_porcentaje)";
            //echo "<br />".$sql_centro_costo;
            if(!$this->sql->consultar($sql_centro_costo, "sigh")){
                $error++;
            }
            //echo $sql_centro_costo."<br>";
            //echo "<br />entra a g".$error;
            if($error>0){
                    $this->sql->consultar("ROLLBACK","sigh");
                    $idcp_egreso="0";
                    return $idcp_egreso;
            }else{
                    $this->sql->consultar("COMMIT","sigh");
                    return $idcp_egreso;
            }

    }

    //(idnota_credito,idcp_q_afecta,observacion)
	function agregar_cp_egreso_referencia($idcp_egreso,$serie_cp,$numero_cp,$idreferencia,$ce_observacion){
        //cp al q afecta la nota de credito
        $sql_cp="SELECT serie,numero,total FROM cp_egreso WHERE idcp_egreso='".$idreferencia."'";
        $result_cp=$this->sql->consultar($sql_cp,"sigh");
        $datos_cp=mysql_fetch_array($result_cp);
       
		$sql="INSERT INTO cp_egreso_referencia(idcp_egreso,idcp_egreso_referencia,comentario,serie,numero,serie_referencia,numero_referencia,monto_referencia) VALUES (".$idcp_egreso.",".$idreferencia.",'".$ce_observacion."',".$serie_cp.",".$numero_cp.",".$datos_cp[serie].",".$datos_cp[numero].",".$datos_cp[total].")";
		$this->sql->consultar($sql, "sigh");
	}

	function actualizar(
	        $idcp_egreso,
	        $idcentro_costo,
            $acentro_costo_porcentaje,
            $idtipo_cp,
            $razon_social,
            $idpersona,
            $serie,
            $numero,
            $fecha_emision,
            $periodo,
            $fecha_pago,
            $fecha_vencimiento,
            $idmoneda,
            $tipo_cambio,
            $idcompra_tipo_operacion,
            $subtotal,
            $descuento,
            $isc,
            $monto_afecto,
            $monto_inafecto,
            $igv,
            $retencion_cuarta_categoria,
            $total,
            $observacion,
            $porc_igv,
            $porc_renta_cuarta_categoria,
            $porc_isc,
            $codigo_retraccion,
            $numero_detraccion_percepcion,
            $fecha_detraccion_percepcion,
            $porc_detraccion_percepcion,
            $monto_detraccion_percepcion,
            $tiene_detraccion_percepcion){
		$ayudante = new Ayudante();
		#$idcp_egreso = $ayudante->obtengoNuevoId("idcp_egreso", "cp_egreso", "", "sigh");
		//$ce_idfarmacia=4;
		$error=0;
		##################################################
		$this->sql->consultar("START TRANSACTION","sigh");
		##################################################
		if($esta_pagada=="on"){$esta_pagada=1;}else {$esta_pagada=0;}
        if($aumenta_precio=="on"){$aumenta_prec_vta=1;}else{$aumenta_prec_vta=0;}

            $ayudante=new Ayudante();
            if($fecha_emision==""){
                $fecha_emision=NULL;
            }else{
                $fecha_emision="'".$ayudante->FechaRevezMysql($fecha_emision,"/")."'";
            }
            if($fecha_vencimiento==""){
                $fecha_vencimiento=NULL;
            }else{
                $fecha_vencimiento="'".$ayudante->FechaRevezMysql($fecha_vencimiento,"/")."'";
            }
            if($fecha_detraccion_percepcion==""){
                $fecha_detraccion_percepcion=NULL;
            }else{
                $fecha_detraccion_percepcion="'".$ayudante->FechaRevezMysql($fecha_detraccion_percepcion,"/")."'";
            }
            $error=0;
            $ayudante=new Ayudante();
            ##################################################
            $this->sql->consultar("START TRANSACTION","sigh");
            ##################################################
            //concepto, fecha de pago,documento_fisico,flete,idorden_pago,esta_pagada,idmodalidad_pago,aumenta_precio,pago_acuenta,idcheque,idcp_origen
            //concepto
            //                  monto_detracion_percepcion='".$idmoneda."',
            //hay retencion por facturas y retencion por recibos
            //echo $razon_social;
            $razon_social_aux=$razon_social;
            $pos_razon_social=strpos($razon_social," (RUC");
            $razon_social=  substr($razon_social,0,$pos_razon_social);// como es una busqueda rapida viene concatenado con (RUC
            $ruc=substr($razon_social_aux, $pos_razon_social+7,  strlen($razon_social_aux)-1);
            $sqlcp="UPDATE cp_egreso SET
              idtipo_cp='".$idtipo_cp."',
              idcp_origen='4',
              idpersona='".$idpersona."',
              idempresa='".$idpersona."',
              ruc='$ruc',
              razon_social='".$razon_social."',
              idcompra_tipo_operacion='".$idcompra_tipo_operacion."',
              serie='".$serie."',
              numero='".$numero."',
              fecha=$fecha_emision,
              fecha_vencimiento=$fecha_vencimiento,
              monto_inafecto='".$monto_inafecto."',
              monto_afecto='".$monto_afecto."',
              idmoneda='".$idmoneda."',
              monto_cambio_moneda='".$tipo_cambio."',
              observacion='".$ayudante->caracter($observacion)."',
              igv='".$igv."',
              porc_igv='".$porc_igv."',
              descuento='".$descuento."',
              total='".$total."',
              subtotal='".$subtotal."',
              asiento_realizado='0',
              esta_declarado='0',
              esta_anulada='0',
              retencion_cuarta_categoria='".$retencion_cuarta_categoria."',
              porc_renta_cuarta_categoria='".$porc_renta_cuarta_categoria."',
              esta_activo='1',
              idusuario='".$_SESSION[id_usu]."',
              tiene_detraccion_percepcion='".$tiene_detraccion_percepcion."' 
";

            #######################detraccion percecpion############################
            if($fecha_detraccion_percepcion!=''){//tiene en cuenta la fecha
               $sqlcp.=",porc_retencion='".$porc_retencion."',
               porc_detracion_percepcion='".$porc_detraccion_percepcion."',
               monto_detraccion_percepcion='".$monto_detraccion_percepcion."',
               fecha_detraccion_percepcion='".$fecha_detraccion_percepcion."',
               codigo_detraccion='".$ayudante->caracter($codigo_retraccion)."'";
            }else{
               $sqlcp.=",porc_retencion=null,
               porc_detracion_percepcion=null,
               monto_detraccion_percepcion=null,
               fecha_detraccion_percepcion=null,
               codigo_detraccion=null";	
            }
          
            ##################################################
            $sqlcp.=" WHERE
              idcp_egreso=$idcp_egreso ";
           // echo $sqlcp;exit;
            ##################################################
            if($this->sql->consultar($sqlcp, "sigh")){
                //$idcp_egreso=$this->sql->idtabla();
            }else{
               $error++;
            }
            ####################################################
            //centro de costo//
            $acentro_costo_porcentaje=100;//porcentaje
            $sql_centro_costo="DELETE FROM
                              cp_egreso_centro_costo 
                              WHERE
                              idcp_egreso=$idcp_egreso
                              ";  
            if(!$this->sql->consultar($sql_centro_costo, "sigh")){
                $error++;
            }   
          //  echo $error;                 
            $sql_centro_costo="INSERT INTO
                              cp_egreso_centro_costo(
                              idcentro_costo,
                              idcp_egreso,
                              porcentaje)
                            VALUES(
                              $idcentro_costo,
                              $idcp_egreso,
                              $acentro_costo_porcentaje)";
            //echo "<br />".$sql_centro_costo;
            if(!$this->sql->consultar($sql_centro_costo, "sigh")){
               $error++;
            }
           // echo $error;
            //echo $sql_centro_costo."<br>";
            //echo "<br />entra a g".$error;
            //exit;
           //echo $error;
            //exit;
            if($error>0){
                    $this->sql->consultar("ROLLBACK","sigh");
                    $idcp_egreso="0";
                    return $idcp_egreso;
            }else{
                    $this->sql->consultar("COMMIT","sigh");
                    //echo "entra".$idcp_egreso;exit;
                    return $idcp_egreso;
            }
        

		if($error>0){
			$this->sql->consultar("ROLLBACK","sigh");
		}else{
			$this->sql->consultar("COMMIT","sigh");
		}
		return $ce_idcp_egreso;
	}

	function eliminar($ce_idcp_egreso){
		$error1=1;
		$error=1;
		$sql0="SELECT idcp_egreso FROM cp_egreso_referencia WHERE idcp_egreso = ".$ce_idcp_egreso."";
		$result=$this->sql->consultar($sql0,"sigh");
		$i=0;
		while(!!$fila=mysql_fetch_array($result)){
			$this->$fila['idcp_egreso'];
			$i++;
		}
		$this->sql->consultar("START TRANSACTION","sigh");
		if($i>0){
			$sql1="DELETE FROM cp_egreso_referencia WHERE idcp_egreso=".$ce_idcp_egreso."";
			if($this->sql->consultar($sql1,"sigh")){
				$error1=0;
			}
		}

		$sql1="UPDATE ingreso_farmacia SET idcpc_farmacia = NULL WHERE idcpc_farmacia = ".$ce_idcp_egreso."";
		if($this->sql->consultar($sql1,"sigh")){
			//echo "4";
			$sql2="DELETE FROM detalle_cpc_farmacia WHERE idcpc_farmacia=".$ce_idcp_egreso."";
			if($this->sql->consultar($sql2,"sigh")){
				//echo "3";
				$sql4="DELETE FROM cpc_farmacia WHERE idcp_egreso=".$ce_idcp_egreso."";
				if($this->sql->consultar($sql4,"sigh")){
					//echo "2";
					$sql3="DELETE FROM cp_egreso WHERE idcp_egreso=".$ce_idcp_egreso."";
					if($this->sql->consultar($sql3,"sigh")){
						//echo "1";
						$error=0;
					}

				}
			}
		}

		if($error==0){
			if($i>0 && $error1==0){
				$this->sql->consultar("COMMIT","sigh");
			}elseif($i==0){
				$this->sql->consultar("COMMIT","sigh");
			}else{
				$this->sql->consultar("ROLLBACK","sigh");
			}
		}else{
			$this->sql->consultar("ROLLBACK","sigh");
		}

		return $ce_idcp_egreso;
	}

	function anular($idcp_egreso){
		$sql1="UPDATE ingreso_farmacia SET idcpc_farmacia = NULL WHERE idcpc_farmacia = ".$idcp_egreso."";
		$this->sql->consultar($sql1,"sigh");
		$sql2="UPDATE cp_egreso SET esta_anulada = 1 WHERE idcp_egreso = ".$idcp_egreso."";
		$this->sql->consultar($sql2,"sigh");
		return $idcp_egreso;
	}
}

?>
